package com.xyzboom.compiler.compiler.grammar

import com.fasterxml.jackson.annotation.JsonIgnore
import com.fasterxml.jackson.annotation.JsonTypeInfo
import com.xyzboom.compiler.NoArg

/**
 * Symbol interface
 */
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "type")
@NoArg
sealed interface ISymbol {
    @get:JsonIgnore
    /**
     * Is terminator
     */
    val isTerminator: Boolean

    /**
     * Simple string
     *
     * @return Simple String of the symbol
     */
    fun simpleString(): String
}